# 如果列表元素可以按照某种算法推算出来，那我们是否可以在循环的过程中不断推算出后续的元素呢？这样就不必创建完整的list，从而节省大量的空间。在Python中，这种一边循环一边计算的机制，称为生成器：generator

L = [x * x for x in range(10)]
print(L)

# generator保存的是算法，每次调用next(g)，就计算出g的下一个元素的值,直到计算到最后一个元素，没有更多的元素时，抛出StopIteration的错误
g = (x * x for x in range(10))
print(g)
for g1 in g:
    print(g1)
